1. Introducción

Antes de comenzar a revisar las técnicas, te recomiendo que le des un vistazo a este video que explica gráficamente lo que vamos a realizar a continuación.

Ahora que ya tienes algunas nociones sobre regresiones, vamos a intentar encontrar la mejor combinación de variables para explicar la evaluación personal sobre diversos aspectos del medioambiente.

Para ello vamos a utilizar los datos de la Encuesta Nacional de Medio Ambiente 2018. Ahí podrán encontrar la presentación de resultados, el libro de códigos y la base de datos (en formato EXCEL). Alternativamente, he dejado los datos en un archivo csv que puedes descargar directamente a R, pero ten a mano el libro de códigos: lo vas a necesitar más de una vez.

2. Análisis descriptivo

Todo análisis comienza por la descripción de las variables a utilizar y esta no es la excpeción.

## 'data.frame':    7601 obs. of  170 variables:
##  $ X           : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID          : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ COMUNA      : int  2101 13201 15101 4102 2101 2101 5101 7301 3101 2101 ...
##  $ P1A         : int  1 2 1 3 1 1 1 2 4 4 ...
##  $ P1B         : int  3 4 2 2 2 2 2 1 1 2 ...
##  $ P1C         : int  2 1 3 1 3 3 3 3 2 3 ...
##  $ P1D         : int  4 3 4 5 5 5 5 4 5 1 ...
##  $ P1E         : int  5 5 5 4 4 4 4 5 3 5 ...
##  $ P1_Educ     : int  1 3 1 3 1 1 1 2 2 4 ...
##  $ P1_Salud    : int  3 1 2 2 2 2 2 1 3 2 ...
##  $ P1_MAmb     : int  2 4 3 1 3 3 3 3 5 3 ...
##  $ P1_Delinc   : int  4 2 4 5 5 5 5 4 1 1 ...
##  $ P1_Crec     : int  5 5 5 4 4 4 4 5 4 5 ...
##  $ P2          : chr  "contaminación de aire" "cambio climatico" "CONTAMINACION DEL AGUA" "congestión vehicular" ...
##  $ P2_COD2     : chr  NA NA NA NA ...
##  $ P2_COD      : int  6 2 5 3 1 6 1 6 6 1 ...
##  $ P3A         : int  3 4 3 4 3 3 3 4 4 3 ...
##  $ P3B         : int  2 4 3 3 3 3 1 4 4 4 ...
##  $ P3C         : int  2 4 4 4 3 3 2 3 3 2 ...
##  $ P3D         : int  2 3 8 3 9 8 2 3 4 4 ...
##  $ P3E         : int  3 4 2 3 4 4 1 4 4 3 ...
##  $ P3F         : int  3 4 3 3 3 3 3 3 4 3 ...
##  $ P4          : int  3 3 3 1 2 3 2 3 2 3 ...
##  $ P5A         : int  1 2 3 4 4 3 4 5 5 3 ...
##  $ P5B         : int  4 3 4 4 4 2 4 4 5 3 ...
##  $ P5C         : int  2 1 3 3 3 1 3 4 9 3 ...
##  $ P6A         : int  3 4 3 2 3 3 3 3 2 4 ...
##  $ P6B         : int  4 4 3 4 3 3 2 3 3 4 ...
##  $ P6C         : int  4 4 3 3 4 3 3 3 3 4 ...
##  $ P6D         : int  4 2 3 2 3 3 2 4 2 1 ...
##  $ P6E         : int  3 3 2 4 3 2 3 4 3 4 ...
##  $ P6F         : int  1 3 2 2 1 2 2 3 2 3 ...
##  $ P6G         : int  4 3 2 4 1 3 3 3 3 4 ...
##  $ P6H         : int  4 2 3 4 3 3 8 3 3 4 ...
##  $ P6I         : int  4 4 3 4 3 4 4 3 3 4 ...
##  $ P6J         : int  4 3 3 4 3 3 3 4 3 4 ...
##  $ P7          : int  1 2 1 3 1 5 5 1 3 3 ...
##  $ P7_OTRO     : chr  NA NA NA NA ...
##  $ P8          : chr  "5" "8" "9" "9" ...
##  $ P8_OTRO     : chr  NA NA NA NA ...
##  $ P9          : int  2 1 2 1 1 2 1 1 2 1 ...
##  $ P10         : chr  "3" "." "5" "." ...
##  $ P10_OTRO_COD: chr  NA NA NA NA ...
##  $ P10_OTRO    : chr  NA NA NA NA ...
##  $ P11_1       : chr  "." "0" "." "0" ...
##  $ P11_2       : chr  "." "1" "." "0" ...
##  $ P11_3       : chr  "." "0" "." "0" ...
##  $ P11_4       : chr  "." "0" "." "1" ...
##  $ P11_5       : chr  "." "1" "." "1" ...
##  $ P11_6       : chr  "." "0" "." "0" ...
##  $ P11_7       : chr  "." "1" "." "0" ...
##  $ P11_8       : chr  "." "0" "." "0" ...
##  $ P11_9       : chr  "." "0" "." "0" ...
##  $ P11_10      : chr  "." "0" "." "0" ...
##  $ P11_NS      : chr  "." "0" "." "0" ...
##  $ P11_NR      : chr  "." "0" "." "0" ...
##  $ P11_OTRO    : chr  NA NA NA NA ...
##  $ P12A        : chr  "." "2" "." "3" ...
##  $ P12B        : chr  "." "3" "." "3" ...
##  $ P12C        : chr  "." "3" "." "3" ...
##  $ P12D        : chr  "." "3" "." "3" ...
##  $ P12E        : chr  "." "3" "." "3" ...
##  $ P12F        : chr  "." "3" "." "3" ...
##  $ P12G        : chr  "." "1" "." "1" ...
##  $ P13A        : int  1 1 1 1 8 1 2 1 1 1 ...
##  $ P13B        : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ P13C        : int  2 2 1 2 1 2 1 1 2 1 ...
##  $ P13D        : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ P13E        : int  1 2 1 1 1 1 1 1 2 1 ...
##  $ P13F        : int  1 1 2 2 2 2 1 1 2 2 ...
##  $ P13G        : int  1 1 2 1 2 2 1 1 2 1 ...
##  $ P13H        : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ P13I        : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ P14A        : int  0 0 0 0 0 0 1 0 1 0 ...
##  $ P14A_SI     : chr  "." "." "." "." ...
##  $ P14A_NO     : chr  "1" "1" "2" "1" ...
##  $ P14B        : int  0 1 0 0 0 0 0 0 0 1 ...
##  $ P14B_SI     : chr  "." "1" "." "." ...
##  $ P14B_NO     : chr  "2" "." "2" "1" ...
##  $ P14C        : int  0 1 1 1 0 1 1 1 0 0 ...
##  $ P14C_SI     : chr  "." "1" "2" "2" ...
##  $ P14C_NO     : chr  "1" "." "." "." ...
##  $ P14D        : int  0 0 0 1 0 0 1 1 0 0 ...
##  $ P14D_SI     : chr  "." "." "." "1" ...
##  $ P14D_NO     : chr  "1" "1" "1" "." ...
##  $ P15         : chr  "Reciclar y reducir consumo de energia" "ahorrar agua, luz, energia renovable" "NO SABE" "conversar con las nuevas generaciones para formar hábitos." ...
##  $ P15_COD     : int  1 4 88 5 5 99 5 5 5 1 ...
##  $ P16A        : int  3 2 3 3 2 3 3 3 3 3 ...
##  $ P16B        : int  2 2 1 3 2 1 2 2 2 2 ...
##  $ P16C        : int  2 1 2 3 2 3 3 3 8 3 ...
##  $ P16D        : int  2 1 2 3 2 2 2 3 3 2 ...
##  $ P16E        : int  3 3 2 3 2 2 3 3 3 3 ...
##  $ P18         : chr  "1" "1" "." "1" ...
##  $ P17         : chr  "Cambios en las temperaturas y lluvias" "fenomeno por causa humana" "NO SABE" "las 2 cosas van de la mano, el calentamiento provoca el cambio climático." ...
##  $ P17_COD2    : chr  NA NA NA NA ...
##  $ P19         : chr  "Impotencia" "culpa" NA "frustración porque la gente no entiende lo que les estamos dejando a los que vienen." ...
##  $ P19_9       : chr  "0" "0" "." "0" ...
##  $ P19_1       : chr  "0" "0" "." "0" ...
##  $ P19_2       : chr  "0" "0" "." "0" ...
##   [list output truncated]

Describamos las frecuencias:

## 
##    1    2    3    4    5    8    9 
##  408  821 2282 3018 1025   38    9
## 
##    1    2    3    4    5 
## 1810 2231 1826 1481  253
## 
##  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37 
##  68  74 114 144 131 139  98 123  95 110 111  85 117 107 105 122 108 150 101 121 
##  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57 
## 127 132 177 115 142 136 118 154 128 155 142 136 298 156 196 180 168 148 155 122 
##  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77 
## 147 111 204 111 132 107 121 170  87 107 101  81 142  56  80  66  63  80  51  41 
##  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  97 
##  43  24  40  25  11  12  26   5  14   8   6   5   8   3   1   2   1   1
##  min Q1 median Q3 max    mean       sd    n missing
##   18 35     49 60  97 47.9108 16.49623 7601       0
## 
##    1    2    3    4 
## 1409 1915 2446 1831
## 
##    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16 
##  341  373  311  330  662  433  432  706  487  380  137  221 1941  252  305  290
## 
##    1    2    3    4 
## 1941 1660 1527 2473
## 
##    1    2 
## 3079 4522
## 
##    1    2    3    4    5    6    7    8    9   10 
##   29  294  483  470 1801  134 1136  849 2099  306
## 
##    1    2    3    4    5    6    7    8    9   10 
##   29  307  510  470 1815  107 1230  280 2482  371

Para mejorar la variabilidad de nuestra variable dependiente, vamos a construir una nueva variable que será la media de las puntuaciones individuales respecto a la evaluación de:

  1. Aire,
  2. Flora y fauna,
  3. Ríos y lagos,
  4. Mar,
  5. Parques y plazas,
  6. Medioambiente en general.
## 
##    1    2    3    4    5 
##  408  821 2282 3018 1025
## 
##                1 1.16666666666667              1.2             1.25 
##                7                4                1                1 
## 1.33333333333333              1.4              1.5              1.6 
##                5                4               19               13 
## 1.66666666666667             1.75              1.8 1.83333333333333 
##               20                1               19               14 
##                2 2.16666666666667              2.2             2.25 
##              134               57               44                3 
## 2.33333333333333              2.4              2.5              2.6 
##              127               86              178               99 
## 2.66666666666667             2.75              2.8 2.83333333333333 
##              289               51              212              312 
##                3 3.16666666666667              3.2             3.25 
##              849              417              231               60 
## 3.33333333333333              3.4              3.5              3.6 
##              608              212              589              171 
## 3.66666666666667             3.75              3.8 3.83333333333333 
##              495               21              171              463 
##                4 4.16666666666667              4.2             4.25 
##              599              254              118               22 
## 4.33333333333333              4.4              4.5              4.6 
##              189               65               98               31 
## 4.66666666666667             4.75              4.8 4.83333333333333 
##               80                2               14               56 
##                5 
##               86

Como verás, ahora tenemos más categorías que sólo las 5 que incluye cada variable por separado. Veamos el histograma:

> ¿Te parece que se asemeja a una distribución normal?

Veamos ahora la variable Edad, que es una de las pocas variables de intervalo que comúnmente podemos encontrar en encuestas sociales.

¿No muy normal, verdad? En el mundo real, esto es un problema que debemos solucionar antes de continuar con el modelamiento de datos por medio de regresiones lineales. Si quieres aprender más sobre eso, te sugiero revisar el manual de Wooldridge que está en Aula Virtual ¡un clásico!

Pero como estamos recién aprendiendo, podemos resolver esos problemas más adelante. Por ahora, sigamos con el análisis descriptivo bivariado, que nos permite contrastar las variables edad y evaluación medioambiental.

¿Puedes ver algún patrón en los datos? Si tienes dificultades para observar alguna relación, podemos apoyarnos en las propiedades gráficas del paquete ggplot2 y así explorar las relaciones.

Ahora podemos ver claramente que existe una concentración al centro del gráfico, aunque quizás sin poder identificar todavía un patrón. Como la relación no es muy clara, podemos apoyarnos en el análisis de regresión lineal para determinar si existe o no alguna influencia de la edad sobre la evaluación medioambiental.

3. Los modelos de regresión

Si solo contaras con información descriptiva de la evaluación medioambiental y tuvieras que adivinar cuál es el valor más probable de obtener si escogemos un caso al azar ¿cuál escogerías?

##  min Q1   median       Q3 max     mean        sd    n missing
##    1  3 3.333333 3.833333   5 3.379386 0.6538412 7601       0
## [1] "numeric"

Vemos que la media y la mediana son bastante cercanas, lo que es un buen indicador (pero insuficiente por sí solo) respecto de la normalidad de la variable. Sin embargo, yo escogería el valor más repetido (la moda): 3.

Veamos ahora la información de la variable, dibujando una curva de densidad estimada que, básicamente, nos entrega información sobre la proporción de casos (el área bajo la curva) que se estima existan para cada valor del eje X (evaluación medioambiental).

¿Se parece a una curva de distribución normal? No tanto, ¿verdad? Recuerda:

Ahora, ¿qué pasaría si te piden “adivinar” la evaluación medioambiental de una persona de 55 años? Eso ya te puede dar una pista mejor para poder pronosticar el resultado ¿Será que los jóvenes son más conscientes y críticos con el medioambiente? ¿O al revés, los adultos mayores tienen una peor evaluación, porque utilizan más el espacio público para caminar por las tardes? Bueno, saber de regresiones no te va a resolver la duda, pero al menos permite acercarte al mejor pronóstico posible en función de la varianza observada en los datos. Para ello, vamos a generar un gráfico de dispersión, pero trazando una curva que represente el valor medio de evaluación medioambiental, para cada año de edad.

## Warning: Ignoring unknown parameters: fun.y

Pero claro, para poder construir esa curva con los valores medio para cada unidad del eje X necesitas contar con los datos, con lo cual ya no sería realmente una adivinanza. Bueno, entonces dejémosle las adivinanzas a los adivinos y concentrémonos en qué información nos puede aportar la recta de regresión.

¿Puedes observar alguna tendencia ahora? Claro, si bien tenemos una alta dispersión en los datos, aún es posible observar una ligera tendencia, donde a mayor edad mejor valoración del medioambiente. Veamos nuevamente la curva de valores promedio, pero agreguemos la recta de regresión ¿Ves alguna relación entre ambas?

Para entender la relación entre ambas, sería mejor que profundices sobre los Mínimos Cuadrados Ordinarios (MCO) en el texto de Wooldridge (quizás recuerdes parte de la explicación del video en la introducción).

## Warning: Ignoring unknown parameters: fun.y
## `geom_smooth()` using formula 'y ~ x'
## No summary function supplied, defaulting to `mean_se()`

4. Fitting regression model

Bien, ahora que ya hemos visto que la recta de regresión muestra la dirección y fuerza de la asociación, podemos llevar esa visualización a una notación matemática con la fórmula de regresión lineal simple:

\[y = \beta_{0} + \beta_{1}X_{1}\] Básicamente, esta fórmula nos permite pronosticar el valor de la variable dependiente \(y\) a partir de tres elementos: el intercepto (\(\beta_{0}\)), la pendiente (\(\beta_{1}\)) y el valor de \(X_{1}\), que corresponde a la puntuación de la variable independiente. En nuestro ejemplo, aún no conocemos el intercepto ni la pendiente, pero sabemos que queremos pronosticar la evaluación medioambiental de una persona de 55 años.

## [1] "lm"
## $names
##  [1] "coefficients"  "residuals"     "effects"       "rank"         
##  [5] "fitted.values" "assign"        "qr"            "df.residual"  
##  [9] "xlevels"       "call"          "terms"         "model"        
## 
## $class
## [1] "lm"
## 
## Call:
## lm(formula = eval ~ edad, data = medioambiente)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.42552 -0.41174 -0.00945  0.44915  1.68471 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 3.2693534  0.0230005  142.14  < 2e-16 ***
## edad        0.0022966  0.0004539    5.06  4.3e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6528 on 7599 degrees of freedom
## Multiple R-squared:  0.003357,   Adjusted R-squared:  0.003226 
## F-statistic:  25.6 on 1 and 7599 DF,  p-value: 4.301e-07

Mira bien los resultados. Fíjate que m1 es un objeto de tipo lm (linear model), que contiene una serie de elementos. Ahora mira el resumen y observa la fórmula que aparece debajo de Call: eval a partir de la edad. Luego puedes ver información sobre los estadísticos descriptivos de los residuos, cuestión que no alcanzaremos a cubrir en este curso, pero que son muy necesarios para validar el modelo.

Y ahora fíjate en los Coefficients, porque ahí está buena parte de la información que nos interesa analizar. Como puedes ver, hay un intercepto y la variable edad, para los cuales se calculan los coeficientes, el error estándar, el valor en distribución t y el valor-p que hemos utilizado anteriormente (Pr(<|t|)). Así, si bien el valor que nos interesa para poder ingresar en la fórmula es justamente el que se encuentra en la columna Estimates, primero necesitamos generar una prueba de hipótesis para cada variable incluída en el modelo, la cual contrastaremos con el estadístico de prueba t, respetando las mismas indicaciones que hemos utilizado anteriormente: valor-p debe ser inferior a 0,05 para poder rechazar H0 y asumir que la variable es significativa para el modelo. En consecuencia, podemos observar que existe evidencia estadísticamente significativa para asumir que la variable edad influye sobre la evaluación medioambiental (otra cosa distinta es cuánto influye).

A partir de esta información podemos tomar nuestra fórmula y simplemente completar:

\(y = \beta_{0} + \beta_{1}X_{1}\) \(y = 3.38 + 0.0023 * 55\) \(y = 3.40\)

¿Fácil, no? Con este procedimiento podemos establecer que el mejor pronóstico para una persona de 55 años, es tener una valoración medioambiental de 3,4, lo que se ubica entre regular y bueno. Pero imagina lo tedioso que podría ser repetir este procedimiento manualmente para probar con diferentes valores. Por fortuna, te tocó aprender estadística en pleno siglo XXI, con computadoras, archivos en la nube y nuestro bendito RStudio (¡los estadísticos clásicos lo hacían todo a mano!), que evidentemente tiene una fórmula para hacerlo automáticamente.

##        1 
## 3.395668

Estuvimos muy cerca ¿verdad?. Las diferencias en milésimas es sólo un error de redondeo.

5. Residuos

Como comentaba anteriormente, una cuestión importante en el modelamiento de datos a través de regresiones, son justamente los residuos: aquella porción de la varianza que no logra ser explicada por el modelo. Para ello se utilizan una serie de técnicas de modelamiento que permiten reducir este valor al mínimo posible (ver texto Wooldridge), lo que en la práctica implica intentar minimizar la distancia que existe en la puntuación observada y la que pronostica el modelo.

A partir de ese ejercicio, es posible calcular una razón entre la varianza explicada y la no explicada, que nos permita resumir en un sólo estadístico la calidad del modelo. Para eso utilizamos el coeficiente de determinación \(R^{2}\):

Lo que esta fórmula nos dice, es que para obtener \(R^{2}\) necesitamos dividir la varianza explicada por el modelo (SSE: sum of squares explained) por la varianza total (SST: sum of square total). Esto nos arroja un valor que nos muestra el porcentaje de varianza de \(y\) que es explicada por el modelo, la que también se puede interpretar como porcentaje.

## $names
##  [1] "call"          "terms"         "residuals"     "coefficients" 
##  [5] "aliased"       "sigma"         "df"            "r.squared"    
##  [9] "adj.r.squared" "fstatistic"    "cov.unscaled" 
## 
## $class
## [1] "summary.lm"
## [1] 0.003357412
## [1] 0.3357412

Así, en nuestro ejemplo, el valor de \(R^{2}\) es de 0.0033574, lo que bien puede leerse como que el modelo logra explicar apenas un 0.34 % de la varianza total de la evaluación medioambiental. ¿Mucho o poco? Esa es una cuestión que depende del criterio y objetivo de la investigación, ya que como señalan Weisburd y Britt (2009, 437), al menos en el ámbito de la justicia criminal es muy difícil obtener valores superiores a 0,40, por lo que si llegas a obtener un \(R^{2}>.40\) ¡estás frente a un gran modelo!

Por otra parte, si obtienes \(R^{2}<0.15\) el modelo es concebido como débil, para lo cual podemos evaluar la posibilidad de incorporar otras variables adicionales al modelo. Sin embargo, este ejercicio nos lleva de una regresión lineal simple a una regresión lineal múltiple, que en la práctica tienen una serie de diferencias que bien vale tener en cuenta si quieres aventurarte a modelar datos. Por fortuna, las interpretaciones de los coeficientes \(\beta\) son muy similares, así como también la prueba de hipótesis para cada variable.

6. Regresión con factores

Una limitación de los modelos de regresión lineal simple o múltiple, es que requieren que todas las variables sean de intervalo o razón. Pese a ello, existe la posibilidad de “engañar” al modelo, incorporando variables cualitativas que, como regla general, deberan tener k-1 categorías (siendo k el nro total de categorías). Esto permite incorporar variables cualitativas (nominales y ordinales) que se conocen como variables dummy (tontas), pues estamos buscando pasar un porcentaje como razón.

Veamos un ejemplo sencillo, con la variable sexo, que es dicotómica pues sólo tiene dos categorías posibles.

## 
## Call:
## lm(formula = eval ~ sexo, data = medioambiente)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.3900 -0.3900 -0.0388  0.4433  1.6279 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.39004    0.01178 287.705   <2e-16 ***
## sexoMujer   -0.01791    0.01528  -1.172    0.241    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6538 on 7599 degrees of freedom
## Multiple R-squared:  0.0001808,  Adjusted R-squared:  4.922e-05 
## F-statistic: 1.374 on 1 and 7599 DF,  p-value: 0.2411

Si utilizamos la información del modelo, tenemos la siguiente fórmula:

\(y = \beta_{0} + \beta_{1}X_{1}\) \(y = 3.39 + -0.01791 * 1\) \(y = 3.37\)

Sin embargo, fíjate que la variable sexo está incluída como sexoMujer. Lo que ocurre es que un modelo de regresión lineal con solo una variable dicotómica como predictora, es básicamente una prueba t para muestras independientes. En este caso, la categoría de referencia es hombre que no se imprime en el modelo. Esto implica que cuando el caso a pronosticar sea una mujer, su valor será inferior a la de los hombres manteniendo todo lo demás constante. Comprueba por tu cuenta que el valor del coeficiente es el mismo que la diferencia entre las medias de hombres y mujeres.

## [1] 3.372133
## [1] 3.39004
## [1] -0.01790752

De este modo, siempre que incorpores variables categóricas o factores, tendrás una categoría de referencia que no aparecerá en el modelo. Veamos el ejemplo con la variable de nivel socioeconómico:

## [1] "integer"
## [1] "factor"
## [1] "E"    "D"    "C3"   "C2"   "ABC1"
## 
## Call:
## lm(formula = eval ~ nse2, data = medioambiente)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.38653 -0.38653  0.01331  0.44680  1.67998 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.42101    0.04105  83.343   <2e-16 ***
## nse2D        0.01092    0.04442   0.246   0.8057    
## nse2C3      -0.03990    0.04380  -0.911   0.3623    
## nse2C2      -0.03448    0.04331  -0.796   0.4260    
## nse2ABC1    -0.10100    0.04382  -2.305   0.0212 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6529 on 7596 degrees of freedom
## Multiple R-squared:  0.003394,   Adjusted R-squared:  0.002869 
## F-statistic: 6.467 on 4 and 7596 DF,  p-value: 3.428e-05

Acá podemos ver que la categoría de referencia es el nivel E: * ¿Puedes interpretar el resto del modelo? * Bien, ahora construye la fórmula del modelo.

Observa como se comportan los datos y la recta de regresión.

7. Regresión múltiple

Por último, vamos a construir un par de modelos de regresión múltiple:

## 
## Call:
## lm(formula = eval ~ edad + nse2 + sexo, data = medioambiente)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.40872 -0.41821 -0.00296  0.44739  1.71410 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.3303121  0.0485552  68.588  < 2e-16 ***
## edad         0.0020417  0.0004638   4.402 1.09e-05 ***
## nse2D        0.0133944  0.0443614   0.302   0.7627    
## nse2C3      -0.0356995  0.0437700  -0.816   0.4147    
## nse2C2      -0.0216365  0.0433958  -0.499   0.6181    
## nse2ABC1    -0.0843020  0.0440013  -1.916   0.0554 .  
## sexoMujer   -0.0274901  0.0153077  -1.796   0.0726 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6521 on 7594 degrees of freedom
## Multiple R-squared:  0.00623,    Adjusted R-squared:  0.005445 
## F-statistic: 7.935 on 6 and 7594 DF,  p-value: 1.505e-08

¿Cuál sería la interpretación de cada coeficiente?

Ahora vamos a crear dos variables más relativos a las medidas ambientales y las acciones ecológicas:

## 
##                1              1.5 1.66666666666667             1.75 
##               45                8               16               16 
##                2             2.25 2.33333333333333              2.5 
##              148              110               44              306 
## 2.66666666666667             2.75                3             3.25 
##               23              704             1544             1075 
## 3.33333333333333              3.5 3.66666666666667             3.75 
##               27              982              113              953 
##                4 
##             1472
## 
##    0    1 
## 1299 6262
## 
##    0    1 
##  472 7122
## 
##    0    1 
## 2187 5399
## 
##    0    1 
## 1739 5798
## 
##    0    1 
## 2165 5425
## 
##    0    1 
## 4909 2683
## 
##    0    1 
## 4021 3489
## 
##    0    1    2    3    4    5    6    7 
##    3   67  277  871 1778 2368 1667  570

## 
## Call:
## lm(formula = eval ~ edad + nse2 + sexo + acciones + medidas, 
##     data = medioambiente)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.40991 -0.42039 -0.00088  0.44804  1.72991 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.1755297  0.0709368  44.766  < 2e-16 ***
## edad         0.0020940  0.0004641   4.512 6.52e-06 ***
## nse2D        0.0088820  0.0443513   0.200  0.84128    
## nse2C3      -0.0417130  0.0437937  -0.952  0.34088    
## nse2C2      -0.0280381  0.0434219  -0.646  0.51848    
## nse2ABC1    -0.0886274  0.0440229  -2.013  0.04413 *  
## sexoMujer   -0.0292108  0.0153987  -1.897  0.05787 .  
## acciones     0.0027428  0.0059010   0.465  0.64209    
## medidas      0.0441100  0.0136692   3.227  0.00126 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6514 on 7577 degrees of freedom
##   (15 observations deleted due to missingness)
## Multiple R-squared:  0.007576,   Adjusted R-squared:  0.006528 
## F-statistic:  7.23 on 8 and 7577 DF,  p-value: 1.35e-09

La fórmula de regresión lineal múltiples es:

\[y = \beta_{0} + \beta_{1}X_{1} + \beta_{2}X_{2} + \beta_{3}X_{3} +... \beta_{i}X_{i}\]

8. Otras técnicas avanzadas de análisis multivariable

8.1 Regresión logística

Para comprender mejor la regresión logística, que se utiliza cuando nuestra variable dependiente es un factor, te sugiero leer este artículo sobre la no-denuncia en Chile

8.2 Análisis de Correspondencias Múltiples

No alcanzamos a cubrir esta técnica en el curso, pero baste con decir que permite visualizar la relación entre variables categóricas, a partir de las distancias chi-cuadrado. Puedes revisar este artículo, que utiliza justamente ACM para analizar las diferencias de proporciones observadas en las sanciones administrativas por infracciones a la ley de extranjería

Nota: buena parte de las sintaxis han sido traducidas y adaptadas del curso del Prof. Juanjo Medina en la Universidad de Manchester, que se encuentra disponible en: https://jjmedinaariza.github.io/R-for-Criminologists/

© danielquinterosr